package com.zrrd.collection;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

/**
 * @author WanJl
 * @version 1.0
 * @title CollectionTest02
 * @description 集合的遍历
 * @create 2024/4/14
 */
public class CollectionTest02 {
    public static void main(String[] args) {
        Collection coll=new ArrayList();
        coll.add(1);
        coll.add("张三");
        coll.add('a');
        //1、使用for循环、while循环、do...while循环--适用于List接口下的集合

        //2、foreach循环-增强for循环，也是一种迭代
        /*
            for(引用类型 对象名:集合[数组]){
                循环体
            }

        for(Object o:coll){
            System.out.println(o);
        }
*/
        //3、迭代器--集合专用的遍历方式
        /*
            迭代器方法：
            Iterator<E> iterator();
            返回当前集合中元素的迭代器对象，通过集合的对象的iterator()方法可以得到一个Iterator对象
            Iterator对象中常用的方法：
                boolean hasNext();判断当前的位置是否有元素可以被取出。有就返回true，没有就返回false
                E next();获取当前位置的元素，然后将迭代器对象移动下一个索引位置。
         */
        //3.1 通过集合对象，调用iterator()方法
        Iterator iterator = coll.iterator();
        //3.2 创建一个循环，一般常用while
//        while(iterator.hasNext()){//括号里判断当前的位置是否有元素，如果有则返回true，否则返回false
//            //把当前的元素取出，并且移动迭代器到下一个索引位置
//            System.out.println(iterator.next());
//        }

        System.out.println(coll);

        while(iterator.hasNext()){
            Object next = iterator.next();
            if ("张三".equals(next)){
                iterator.remove();
            }
        }

        //在外部输出一下集合
        System.out.println(coll);

        //通过.foreach()进行输出集合元素
        coll.forEach(System.out::println);//System.out::println 是一种lambda表达式，后面会学，现在能用就行。


        //iterator.remove();移除的是迭代器的元素，还是集合的元素？
        System.out.println(coll);//移除的集合中的元素。迭代器只是一个不断遍历的操作而已，不存在元素。

    }
}
